/* 
 * File:   Monster.h
 * Author: Potential
 *
 * Created on September 14, 2013, 6:19 PM
 */

#ifndef MONSTER_H
#define	MONSTER_H

#include <string>

using namespace std;

class Monster {
public:
    Monster();
    virtual ~Monster();

    void setName(string);
    string getName() { return name; }

    void setCurHealth(int);
    int getCurHealth() { return curHealth; }

    void setMaxHealth(int);
    int getMaxHealth() { return maxHealth; }

    void setMinDamage(int);
    int getMinDamage() { return minDamage; }

    void setMaxDamage(int);
    int getMaxDamage() { return maxDamage; }

    void setArmor(int);
    int getArmor() { return armor; }

    void setCriticalStrikeMultiplier(double criticalStrikeMultiplier);
    double getCriticalStrikeMultiplier() const;

    void setCriticalStrikeChance(int criticalStrikeChance);
    int getCriticalStrikeChance() const;

    void setCriticalStrike();
    bool isCriticalStrike() const;

    int getDamage();

    void displayStats();
    void resetHealth();

    void monsterSelection(int);
    void setMaxExperience(int maxExperience);
    int getMaxExperience() const;
    void setExperience(int experience);
    int getExperience() const;
    void setLevel(int level);
    int getLevel() const;
    
    void levelUp();
    void gainExperience(int);
    void increaseStats();

private:
    string name;

    int curHealth;
    int maxHealth;

    int minDamage;
    int maxDamage;

    int armor;

    bool criticalStrike;
    int criticalStrikeChance;
    double criticalStrikeMultiplier;
    
    int level;
    int experience;
    int maxExperience;

};

#endif	/* MONSTER_H */